home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / distutils / archive_util.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  4KB  |  140 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __revision__ = '$Id: archive_util.py 37828 2004-11-10 22:23:15Z loewis $'
  5. import os
  6. from distutils.errors import DistutilsExecError
  7. from distutils.spawn import spawn
  8. from distutils.dir_util import mkpath
  9. from distutils import log
  10.  
  11. def make_tarball(base_name, base_dir, compress = 'gzip', verbose = 0, dry_run = 0):
  12.     compress_ext = {
  13.         'gzip': '.gz',
  14.         'bzip2': '.bz2',
  15.         'compress': '.Z' }
  16.     compress_flags = {
  17.         'gzip': [
  18.             '-f9'],
  19.         'compress': [
  20.             '-f'],
  21.         'bzip2': [
  22.             '-f9'] }
  23.     if compress is not None and compress not in compress_ext.keys():
  24.         raise ValueError, "bad value for 'compress': must be None, 'gzip', or 'compress'"
  25.     
  26.     archive_name = base_name + '.tar'
  27.     mkpath(os.path.dirname(archive_name), dry_run = dry_run)
  28.     cmd = [
  29.         'tar',
  30.         '-cf',
  31.         archive_name,
  32.         base_dir]
  33.     spawn(cmd, dry_run = dry_run)
  34.     if compress:
  35.         spawn([
  36.             compress] + compress_flags[compress] + [
  37.             archive_name], dry_run = dry_run)
  38.         return archive_name + compress_ext[compress]
  39.     else:
  40.         return archive_name
  41.  
  42.  
  43. def make_zipfile(base_name, base_dir, verbose = 0, dry_run = 0):
  44.     
  45.     try:
  46.         import zipfile as zipfile
  47.     except ImportError:
  48.         zipfile = None
  49.  
  50.     zip_filename = base_name + '.zip'
  51.     mkpath(os.path.dirname(zip_filename), dry_run = dry_run)
  52.     if zipfile is None:
  53.         if verbose:
  54.             zipoptions = '-r'
  55.         else:
  56.             zipoptions = '-rq'
  57.         
  58.         try:
  59.             spawn([
  60.                 'zip',
  61.                 zipoptions,
  62.                 zip_filename,
  63.                 base_dir], dry_run = dry_run)
  64.         except DistutilsExecError:
  65.             raise DistutilsExecError, "unable to create zip file '%s': could neither import the 'zipfile' module nor find a standalone zip utility" % zip_filename
  66.         except:
  67.             None<EXCEPTION MATCH>DistutilsExecError
  68.         
  69.  
  70.     None<EXCEPTION MATCH>DistutilsExecError
  71.     log.info("creating '%s' and adding '%s' to it", zip_filename, base_dir)
  72.     
  73.     def visit(z, dirname, names):
  74.         for name in names:
  75.             path = os.path.normpath(os.path.join(dirname, name))
  76.             if os.path.isfile(path):
  77.                 z.write(path, path)
  78.                 log.info("adding '%s'" % path)
  79.                 continue
  80.         
  81.  
  82.     if not dry_run:
  83.         z = zipfile.ZipFile(zip_filename, 'w', compression = zipfile.ZIP_DEFLATED)
  84.         os.path.walk(base_dir, visit, z)
  85.         z.close()
  86.     
  87.     return zip_filename
  88.  
  89. ARCHIVE_FORMATS = {
  90.     'gztar': (make_tarball, [
  91.         ('compress', 'gzip')], "gzip'ed tar-file"),
  92.     'bztar': (make_tarball, [
  93.         ('compress', 'bzip2')], "bzip2'ed tar-file"),
  94.     'ztar': (make_tarball, [
  95.         ('compress', 'compress')], 'compressed tar file'),
  96.     'tar': (make_tarball, [
  97.         ('compress', None)], 'uncompressed tar file'),
  98.     'zip': (make_zipfile, [], 'ZIP file') }
  99.  
  100. def check_archive_formats(formats):
  101.     for format in formats:
  102.         if not ARCHIVE_FORMATS.has_key(format):
  103.             return format
  104.             continue
  105.     else:
  106.         return None
  107.  
  108.  
  109. def make_archive(base_name, format, root_dir = None, base_dir = None, verbose = 0, dry_run = 0):
  110.     save_cwd = os.getcwd()
  111.     if root_dir is not None:
  112.         log.debug("changing into '%s'", root_dir)
  113.         base_name = os.path.abspath(base_name)
  114.         if not dry_run:
  115.             os.chdir(root_dir)
  116.         
  117.     
  118.     if base_dir is None:
  119.         base_dir = os.curdir
  120.     
  121.     kwargs = {
  122.         'dry_run': dry_run }
  123.     
  124.     try:
  125.         format_info = ARCHIVE_FORMATS[format]
  126.     except KeyError:
  127.         raise ValueError, "unknown archive format '%s'" % format
  128.  
  129.     func = format_info[0]
  130.     for arg, val in format_info[1]:
  131.         kwargs[arg] = val
  132.     
  133.     filename = apply(func, (base_name, base_dir), kwargs)
  134.     if root_dir is not None:
  135.         log.debug("changing back to '%s'", save_cwd)
  136.         os.chdir(save_cwd)
  137.     
  138.     return filename
  139.  
  140.